# coding:utf-8

"""
    这个代码走DouyuImagesPipeline这个管道,采取ImagesPipeline类中实现保存图片的方式
"""

import json
import scrapy

from ..items import DouyuItem


class DouyuSpider(scrapy.Spider):
    name = "douyu2"
    allow_domain = ["douyucdn.cn"]
    # 手机斗鱼动态数据的地址
    base_url = "http://capi.douyucdn.cn/api/v1/getVerticalRoom?limit=100&offset="

    page = 0

    start_urls = [base_url + str(page)]

    def parse(self, response):
        """解析数据并发送请求解析图片地址,同时发送下一页请求"""
        # 提取json响应的data字段数据(动态页面ajax)
        data_list = json.loads(response.body)['data']

        # 判断data_list是否有数据,如没有数据则退出parse方法
        if not data_list:
            return

        for data in data_list:
            item = DouyuItem()
            item['room_url'] = "http://www.douyu.com/" + data['room_id']
            item['image_url'] = data['vertical_src']
            item['nick_name'] = data['nickname']
            item['city'] = data['anchor_city']

            #这里将图片请求保存采用ImagesPipeline类处理,因此直接将item返回给引擎,也不需要parse_image方法了
            # 发送图片请求,并传递item到指定的回调函数里
            # yield scrapy.Request(item['image_url'], meta={"item": item}, callback=self.parse_image)
            yield item

        #记录日志信息到日志文件中, 将不会在终端显示    print才会在终端显示
        #logging.info()是通过logging模块记录日志, Spider.logger.info()是通过Spider对象的logger记录日志
        self.logger.info("room url")
        self.logger.info(item['room_url'])


        # 发送json文件的翻页请求---下一页
        self.page += 100
        yield scrapy.Request(self.base_url + str(self.page), callback=self.parse)

    # def parse_image(self, response):
    #     """提取并保存图片,同时将item交给管道处理"""
    #     item = response.meta["item"]
    #     # 指定当前图片的存储路径和文件名
    #     file_name = "/home/python/Desktop/Spider/spider_09/Douyu/Douyu/img/" + item["nick_name"] + ".jpg"
    #     # 将图片路径保存在item字段里
    #     item['image_path'] = file_name
    #     # 保存图片
    #     with open(file_name, 'wb') as f:
    #         f.write(response.body)
    #
    #     # 将item交给管道处理
    #     yield item
